package cn.e4j.modular.api.service;

import cn.e4j.core.dto.impl.Dto;
import cn.e4j.core.util.DateUtils;
import cn.e4j.modular.api.mapper.FwpjMapper;
import cn.e4j.modular.crm.entity.MmrdT;
import cn.e4j.modular.crm.entity.MmrkT;
import cn.e4j.modular.system.entity.SysUser;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 服务评价
 */
@Service
public class FwpjService {
    @Autowired
    FwpjMapper fwpjMapper;
    /**
     * 获取服务单列表
     *
     * @param inDto
     * @return
     */
    public List<Dto> getServiceOrderListData(Page<Object>page, Dto inDto){
        return fwpjMapper.getServiceOrderListPage(page,inDto);
    }

    /**
     * 服务评价提交
     * @param inDto
     * @return
     */
    @Transactional
    public void saveFwpj(SysUser user,Dto inDto){
        Date date = new Date();
        List<MmrkT> mmrk_tPos = new ArrayList<>();
        JSONObject inJson = JSONObject.parseObject(inDto.getString("obj"));
        String mmrkdocno = "WXPJ" + DateUtils.getDate("yyyyMMddHHmmssSSS");

        JSONArray pjs = inJson.getJSONArray("pj");
        for(int i=0;i<pjs.size();i++){
            JSONObject dto = pjs.getJSONObject(i);
            MmrkT mmrk_tPO = new MmrkT();
            mmrk_tPO.setMMRKENT(user.getDBC());
            mmrk_tPO.setMMRKDOCNO(mmrkdocno);
            mmrk_tPO.setMMRKSEQ(BigDecimal.valueOf(i+1));
            //mmrk_tPO.setMMRKDOCDATE(DateUtils.parseDate(DateUtils.formatDate(date,DateUtils.PATTERN_yyyy_MM_dd)));
            mmrk_tPO.setMMRKDOCDATE(LocalDate.now());
            mmrk_tPO.setMMRK001(inDto.getString("MMRDDOCNO"));
            mmrk_tPO.setMMRK002(Integer.parseInt(inDto.getString("MMRDSEQ"))+"");
            mmrk_tPO.setMMRK003(dto.getString("MMRJ001"));
            mmrk_tPO.setMMRK004(dto.getString("MMRK004"));
            mmrk_tPO.setMMRK005(inJson.getString("MMRK005"));
            mmrk_tPO.setMMRK006(String.valueOf(inDto.getString("MMRD015")));
            mmrk_tPO.setMMRK007(inJson.getString("MMRK007"));
            mmrk_tPO.setMMRK008(user.getID());
            mmrk_tPO.setMMRK009(inJson.getString("MMRK009"));//评价人电话
            mmrk_tPO.setMMRK010(inJson.getString("MMRK010"));
            mmrk_tPO.setMMRKACTI("Y");
            mmrk_tPO.setMMRKUSER(user.getID());
            mmrk_tPO.setMMRKGRUP(user.getORG_ID());
            mmrk_tPO.setMMRKORIU(user.getID());
            mmrk_tPO.setMMRKORIG(user.getORG_ID());
            //mmrk_tPO.setMMRKDATE(DateUtils.parseDate(DateUtils.formatDate(date,DateUtils.PATTERN_yyyy_MM_dd)));
            mmrk_tPO.setMMRKDATE(LocalDate.now());
            mmrk_tPO.setMMRKTIME(DateUtils.formatDate(date,DateUtils.PATTERN_HH_mm_ss));
            mmrk_tPos.add(mmrk_tPO);
        }
        for (MmrkT mmrkT : mmrk_tPos){
            mmrkT.insert();
        }

        MmrdT mmrd_tPO = new MmrdT();
        mmrd_tPO.setMMRD020("5");
        mmrd_tPO.setMMRDENT(inDto.getString("MMRDENT"));
        mmrd_tPO.setMMRDDOCNO(inDto.getString("MMRDDOCNO"));
        mmrd_tPO.setMMRDSEQ(inDto.getBigDecimal("MMRDSEQ"));
        mmrd_tPO.setMMRDMODU(user.getID());
        //WHERE  mmrdent = #{mmrdent} AND mmrddocno = #{mmrddocno} AND mmrdseq = #{mmrdseq}
        UpdateWrapper<MmrdT> wrapper = new UpdateWrapper<>();
        wrapper.eq("MMRDENT",mmrd_tPO.getMMRDENT());
        wrapper.eq("MMRDDOCNO",mmrd_tPO.getMMRDDOCNO());
        wrapper.eq("MMRDSEQ",mmrd_tPO.getMMRDSEQ());
        mmrd_tPO.update(wrapper);
    }

    public List<Dto> getFwpjOfCustomer(Dto dto) {
        return fwpjMapper.getFwpjOfCustomer(dto);
    }
}
